// 关于用户相关的小仓库
import { defineStore } from 'pinia';
// 引入接口
import { reqLogin } from '@/api/user/index.ts'
// 引入数据类型
import  type { loginForm, loginResponseData } from '@/api/user/type.ts'
import type { UserState } from './types/type';
// 引入 存储token的方法
import { SET_TOKEN, GET_TOKEN } from '@/utils/token'

// 引入常量路由
import { constantRoute} from '@/router/routes'

// 创建用户仓库 选项式API
let useUserStore = defineStore('User', {
	state: ():UserState => {
		return {
			// 从本地存储中获取token值
			token: GET_TOKEN(),
			menuRoutes:constantRoute
		}
	},
	// 异步|逻辑
	actions: {
		// 用户登录的方法
		async userLogin(data: loginForm) {
			// 登录请求
			const res:loginResponseData = await reqLogin(data)			
			// 登录成功 返回 200 -> 存储 token
			if (res.code === 200) {
				// pinia仓库存储 Token
				this.token = (res.data.token as string)
				// 本地持久化存储
				SET_TOKEN(res.data.token as string)
				// localStorage.setItem("TOKEN", (res.data.token as string))
				// 如果登录成功 返回ok
				return 'OK'
			} else {
				// 登录失败
				return Promise.reject(new Error(res.data.message))
			}
		}
		
	},
	// 获取仓库
	getters:{
		
	}
	
})

// 对外暴露
export default useUserStore
